package 网络编程.upload;

import 网络编程.utils.StreamUtils;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;

/**
 * @author Y·C
 * @version 1.0.0
 * @ClassName TCPFileUploadClient.java
 * @Description TODO
 * @createTime 2023年05月03日 17:58:00
 */
public class TCPFileUploadClient {
    public static void main(String[] args) throws Exception {
        //客服端连接服务端 8888，得到Socket对象
        Socket socket = new Socket(InetAddress.getLocalHost(), 8888);
        //创建读取磁盘文件的输入流：
        String filePath = "D:\\files\\1.png";
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath));

        //bytes 就是filePath对应的字节数组
        byte[] bytes = StreamUtils.streamToByteArray(bis);

        //通过socket获取到输出流，将bytes数据发送给服务器
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        bos.write(bytes);//将文件对应的字节数组内容，写入到数据通道
        bis.close();
        socket.shutdownOutput(); //设置写数据结束标志

        //接收从服务端回复的消息

        InputStream inputStream = socket.getInputStream();
        //使用StreamUtils的方法，直接将inputStream读取到内容 转成字符串
        String s = StreamUtils.streamToString(inputStream);
        System.out.println(s);


        //关闭
        inputStream.close();
        bos.close();
        socket.close();
    }
}
